// 管理用户数据相关
import { defineStore } from 'pinia'
import {loginApi} from '@/apis/login'
import {ref} from 'vue'
import { useCartStore } from './cartStore'
import { mergeCartApi } from '@/apis/cart'

export const useUserStore = defineStore('user', () => {
    const cartStore = useCartStore()
    // 1.管理用户数据的定义state
    const userInfo = ref({})
    // 2.管理用户数据的方法
    const getUserInfo = async ({account,password}) => {
        const res = await loginApi({account,password})
        userInfo.value = res.result
        // 合并购物车操作
        await mergeCartApi(cartStore.cartList.map(item=>{
            // .map() 要求你必须通过 return 返回一个新的值，否则映射出来的结果会是 undefined。
            return{
                skuId:item.skuId,
                selected:item.selected,
                count:item.count
            }
        }))
        cartStore.getNewewCartList()
    }

    // 3.退出登录清空用户数据
    const clearUserInfo = () => {
        userInfo.value = {}
        // 清空购物车
        cartStore.clearCart()

    }
    // 3.以对象格式把state和方法暴露出去
    return {
        userInfo,
        getUserInfo,
        clearUserInfo
    }
},{
    persist: true
})
